﻿using System.Data;
using SdmxMl.GenericMetadata;
using SdmxMl.Manager;
using SdmxMl.Structure;

namespace SilcQuest
{
    public class SuiviTableForVariable
    {
        /// <summary>
        /// Generate a table with all history items attached to variable
        /// </summary>
        /// <param name="smCati">SDMX artefact container7loader</param>
        /// <param name="msdSuivi">MSD for history suivi model</param>
        /// <param name="metaSetSuivi">suivi items as generic metadataset</param>
        /// <param name="_attributeValueSet">concerned attribute (variable)</param>
        /// <returns>the filled table</returns>
        public DataTable Generate(SmManager smCati, MetadataStructureDefinitionType msdSuivi,
            MetadataSetType metaSetSuivi, AttributeValueSetType _attributeValueSet)
        {
            DataTable tbSuivi = CreateSuiviTable();
            
            if (_attributeValueSet != null && msdSuivi != null && metaSetSuivi != null)
            {
                string var = _attributeValueSet.TargetValuesTypeList.GetComponentValue("VARNAME").Value;
                foreach (AttributeValueSetType avs in metaSetSuivi.AttributeValueSetList)
                {
                    ComponentValueType compo = avs.TargetValuesTypeList.GetComponentValue("VARNAME");
                    if (compo != null && compo.Value == var)
                    {
                        CatiSuiviItem suiviItem = new CatiSuiviItem(smCati, msdSuivi.ReportStructureList[0], avs);
                        tbSuivi.Rows.Add(new object[] {
                            suiviItem.Date,
                            suiviItem.FieldType,
                            suiviItem.Problem,
                            suiviItem.Lang,
                            suiviItem.User,
                            suiviItem.TranslationStatus,
                            suiviItem.Id
                        });
                    }
                }
            }
            // SILC Request: 2011-10-26
            tbSuivi.DefaultView.Sort = "Date DESC";

            return tbSuivi;
        }
                
        

        // Table for holding History info associated to selected question
        protected DataTable CreateSuiviTable()
        {
            DataTable tbSuivi = new DataTable("Suivi");
            tbSuivi.Columns.Add(new DataColumn("Date", typeof(string)));
            tbSuivi.Columns.Add(new DataColumn("FieldType", typeof(string)));
            tbSuivi.Columns.Add(new DataColumn("Problem", typeof(string)));
            tbSuivi.Columns.Add(new DataColumn("Lang", typeof(string)));
            tbSuivi.Columns.Add(new DataColumn("Uid", typeof(string)));
            tbSuivi.Columns.Add(new DataColumn("TrStat", typeof(string)));
            tbSuivi.Columns.Add(new DataColumn("Id", typeof(string)));

            return tbSuivi;
        }

    }
}
